

#ifndef __UCGSMANAGER_H__
#define __UCGSMANAGER_H__
#pragma pack (push, 8)

class UcDbViewportTableRecord;
class UcGiDrawable;
class UcGsClassFactory;
class UcGsView;
class UcGsModel;
class UcGsDevice;
struct UcGsClientViewInfo;

class UcGsManager
{
public:
                                UcGsManager             (void) { }
    virtual                    ~UcGsManager             (void) { }

    virtual UcGsModel *         createUECADModel      (void)                          = 0;
    virtual UcGsView *          createUECADViewport   (UcDbViewportTableRecord * vp)  = 0;    
    virtual UcGsView *          createUECADView       (UcGiDrawable * drawable)       = 0;

    virtual UcGsDevice *        createUECADDevice     (HWND hWnd)                     = 0;
    virtual UcGsDevice *        createUECADOffScreenDevice()                          = 0;

    virtual void                destroyUECADModel     (UcGsModel  * model)            = 0;
    virtual void                destroyUECADView      (UcGsView   * view)             = 0;
    virtual void                destroyUECADDevice    (UcGsDevice * device)           = 0;
    
    virtual UcGsClassFactory *  getGSClassFactory       (void)                          = 0;
    virtual UcGsModel        *  getDBModel              (void)                          = 0;
    virtual UcGsDevice       *  getGUIDevice            (void)                          = 0;
};

#pragma pack (pop)
#endif 
